﻿using Bentley.Internal.MstnPlatformNET.DotNetShim;
using CheccCoverplateCulvertAssemble.FormColl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;

namespace CheccCoverplateCulvertAssemble.run
{
    public class Commands
    {
        public static Assemble mainForm = new Assemble();
        public static bool isBimCenter = false;
        /// <summary>
        /// 是否为批量
        /// </summary>
        public static bool isBatch { get; set; } = true;
        public static void Entrance(string unparsed)
        {
            string dllPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            try
            {
                if (dllPath.Contains("CCCCLTD"))
                {
                    //软件授权 失败则退出
                    if (!CCLicenseAPI.LicenseHelper.ProductCanUse(2007))
                    {
                        MessageBox.Show("软件未授权！");
                        return;
                    }
                    CCLicenseAPI.LicenseHelper.SendLog(2007, "1.0", "盖板涵组装");
                    //发送授权成功数据
                    //ExamineLawfulUser.VerifyInfo verifyInfo = ExamineLawfulUser.LawfulUser.SoftIsLawful(ExamineLawfulUser.SoftwareType.checc_CAD);
                    //if (verifyInfo != 0) return;
                }
                isBimCenter = true;
                isBatch = false;
                #region 配置文件
                string path = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\Config.xml";
                CreateConfig(path, "appSettings", "Ip", "zztkbim.com/culvertdb");
                #endregion

                if (mainForm != null)
                {
                    if (mainForm.IsDisposed)
                        mainForm = new Assemble();//如果已经销毁，则重新创建子窗口对象
                }
                mainForm.Show();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message); 
            }
        }

        /// <summary>
        /// 创建配置文件
        /// </summary>
        /// <param name="xmlFilePath">文件路径</param>
        /// <param name="rootNode">根节点名称</param>
        /// <param name="node">子节点名称</param>
        /// <param name="value">子节点值</param>
        public static void CreateConfig(string xmlFilePath, string rootNode, string node, string value)
        {
            XmlDocument xmlDoc = new XmlDocument();

            try
            {
                // 检查文件是否存在
                if (File.Exists(xmlFilePath))
                {
                    // 文件存在，则加载XML文件
                    xmlDoc.Load(xmlFilePath);
                }
                else
                {
                    // 文件不存在，则创建新的XML声明和根元素
                    XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
                    xmlDoc.AppendChild(xmlDeclaration);

                    // 创建根节点
                    XmlElement root = xmlDoc.CreateElement(rootNode);
                    xmlDoc.AppendChild(root);
                }

                // 使用XPath选择IP节点，检查它是否存在
                XmlNode ipNode = xmlDoc.SelectSingleNode("//" + node);

                // 如果IP节点不存在，则创建它并添加文本内容
                if (ipNode == null)
                {
                    // 获取文档的根节点
                    XmlElement root = xmlDoc.DocumentElement;

                    // 创建一个新的IP节点
                    XmlElement newIpNode = xmlDoc.CreateElement(node);
                    // 创建文本节点"你好"并添加到IP节点
                    XmlText ipTextContent = xmlDoc.CreateTextNode(value);
                    newIpNode.AppendChild(ipTextContent); // 将文本节点作为IP节点的子节点
                    root.AppendChild(newIpNode); // 将IP节点添加到根节点下

                    // 保存对XML文档所做的更改
                    xmlDoc.Save(xmlFilePath);
                }
            }
            catch (Exception ex)
            {
                // 如果在加载或处理XML文件过程中发生错误，输出错误信息
                MessageBox.Show("发生错误: " + ex.Message);
            }
        }
    }
}
